cmake(11):将可执行和库文件分别输出到指定目录 您所在的位置:网站首页 cmake依赖目录 编译完成 cmake(11):将可执行和库文件分别输出到指定目录

cmake(11):将可执行和库文件分别输出到指定目录

2024-07-11 23:07| 来源: 网络整理| 查看: 265

1. 说明

当一个工程编译后包含多个可执行和库文件,将这些文件分别放置在对应的目录里面会使得工程看起来更有序…(当然,这些都是我编的,毕竟要给自己找个理由)

这篇笔记用于记录如何使用cmake在编译后将库文件和可执行文件生成在指定目录。

2. 示例

仍然以之前的代码为例。

在主CMakeLists.txt文件中设置目录路径

# 设置静态库文件目录 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) # 动态库文件目录 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) # 可执行文件目录 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

在各个库代码的子CMakeLists.txt文件中关联目录

link_directories (${CMAKE_LIBRARY_OUTPUT_DIRECTORY})

其实这一步没有必要,因为在编译可执行文件的cmake file里已经添加了target_link_directories()命令了,出于学习目的,这里选择加上。

2.1 变量说明

CMAKE_ARCHIVE_OUTPUT_DIRECTORY 表示将所有的静态库文件放在哪个目录里,这个变量会初始化ARCHIVE_OUTPUT_DIRECTORY属性。

CMAKE_LIBRARY_OUTPUT_DIRECTORY 表示将所有构建的动态库文件放在哪个目录,这个变量会初始化LIBRARY_OUTPUT_DIRECTORY属性。

2.2 link_directories命令解析

这个命令用于将指定目录添加链接器的路径内,既可以是绝对路径也可以是相对路径,这个命令仅对其后生成的目标有效。命令格式如下:

link_directories([AFTER|BEFORE] directory1 [directory2 ...]) AFTER|BEFORE:表示指定目录是放在链接器当前路径的前面还是后面,默认是AFTER

注:现在极少使用这个命令,如有必要cmake官方建议使用target_link_directories()命令代替。

3. 将头文件放在同一个目录

这里添加一个在工程中将所有的头文件都放在同一个目录中的用法。(因为这两个内容实在是太少了)

还是以前面的工程为例。

将math和utility下的两个头文件都放在include目录下 ├── include │ ├── math │ │ └── add.h │ └── utility │ └── utils.h 在主CMakeLists.txt文件中包含头文件 # include include_directories(${PROJECT_SOURCE_DIR}/include) include_directories(${PROJECT_SOURCE_DIR}/include/math) include_directories(${PROJECT_SOURCE_DIR}/include/utility)

这里include及其子目录要分别包含。

4. 总结

没有总结,只是我又水了一篇文档。

参考链接

CMake Document



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有